package com.second.app.thread.线程基础.day03.synchronizedmethodlockobject;

/**
 * @Author GYZ
 * @Date 2023/11/21
 * <pre>
 *   method A :是加了synchronized方法，所以当线程A,线程B同时进入methodA方法，会有个排队的情况。
 *   method B: 没有加synchronized,那么线程A即使持有对象锁，但是线程B完全可以直接访问，异步调用非synchronized方法。
 *   得出结论：
 *      A线程持有object对象的Lock锁，B线程如果调用object对象中的synchronized方法，则需要等待，也就是同步。
 *      A线程持有object对象的Lock锁，B线程如果调用object对象中的非synchronized方法，则不需要等待，也就是异步。
 * </pre>
 */
public class MyObject {

    public synchronized void methodA(){
        try {
            System.out.println("begin MethodA threadName="+Thread.currentThread().getName());
            Thread.sleep(5000);
            System.out.println("end");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public  void methodB(){
        try {
            System.out.println("begin MethodB threadName="+Thread.currentThread().getName());
            Thread.sleep(5000);
            System.out.println("end");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
